package com.sy.olddriver.dao;

import com.sy.olddriver.entity.Product;

import java.util.List;

/**
 * 产品数据库操作相关的接口
 *
 * @author Administrator
 */
public interface ProductDao {
    /**
     * 获取最新的产品信息
     *
     * @param limit 要获取的最新的产品的数量
     * @return 最新产品的信息 newest products
     */
    List<Product> getNewestProducts(Long limit);

    /**
     * 获取最热的产品信息
     *
     * @param limit 要获取的最热的产品的数量
     * @return 最热产品的信息 hotest products
     */
    List<Product> getHotestProducts(Long limit);


    /**
     * 根据条件查询产品的数量
     *
     * @param cid 分类编号
     * @param q   查询关键字
     * @return 查询到的总数量 products count by condition
     */
    Long getProductsCountByCondition(String cid, String q);


    /**
     * 根据条件分页查询产品的信息
     *
     * @param cid   分类编号
     * @param q     查询关键字
     * @param start 分页时该页记录的起始索引
     * @return 查询到的产品信息 products by condition
     */
    List<Product> getProductsByCondition(String cid, String q, Integer start);


    /**
     * 根据产品编号查询产品信息
     *
     * @param pid 产品编号
     * @return 产品信息 product by id
     */
    Product getProductById(String pid);


    /**
     * 增加产品的点击量
     *
     * @param pid 产品编号
     * @return 是否增加成功 boolean
     */
    boolean addClickCount(String pid);

    /**
     * 根据任意多个id查询对应的产品的信息
     *
     * @param ids 产品id列表
     * @return 产品列表信息 products by ids
     */
    List<Product> getProductsByIds(List<String> ids);
}
